/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package otcapp.controlador.modelocombobox;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import javax.swing.DefaultComboBoxModel;
import otcapp.entidades.TipoPieza;

/**
 *
 * @author diego
 */
public class ModeloComboTipoPieza extends DefaultComboBoxModel {

    private List<TipoPieza> listaTipo;

    public ModeloComboTipoPieza() {
        listaTipo = new ArrayList<>();
        addElement("Seleccione un Tipo de Pieza");


    }

    public ModeloComboTipoPieza(List<TipoPieza> nuevalista) {

        listaTipo = nuevalista;
        addElement("Seleccione un Tipo de Pieza");
        for (TipoPieza tipo : nuevalista) {
            addElement(tipo.getNombreTipo());

        }


    }

    public void setListaCombo(List<TipoPieza> nuevalista) {
        listaTipo = nuevalista;
        removeAllElements();
        addElement("Seleccione un Tipo de Pieza");
        for (TipoPieza tipo : nuevalista) {
            addElement(tipo.getNombreTipo());

        }

    }
    

    public TipoPieza getTipoSeleccionado() {
        TipoPieza TipoEncontrado = null;
        for (TipoPieza tipo : listaTipo) {
            if (tipo.getNombreTipo().equals(super.getSelectedItem().toString())) {
                TipoEncontrado = tipo;
            }
        }

        return TipoEncontrado;

    }

    public void agergarTipo(TipoPieza nuevoTipo) {
        if (listaTipo == null) {
            listaTipo = new ArrayList<TipoPieza>();
            addElement("Seleccione un Tipo de Pieza");
        }
        for (TipoPieza tipoProducto : listaTipo) {
            if (tipoProducto.getNombreTipo().equals(nuevoTipo.getNombreTipo())) {
                return;
            }
        }
        listaTipo.add(nuevoTipo);
        super.addElement(nuevoTipo.getNombreTipo());
    }

    public List<TipoPieza> getListaTipo() {
        return listaTipo;
    }

    public void setTipoSeleccionado(TipoPieza tipoProducto) {
        if (listaTipo != null) {
            for (TipoPieza tipo : listaTipo) {
                if (tipo.getNombreTipo().equals(tipoProducto.getNombreTipo())) {
                    setSelectedItem(tipoProducto.getNombreTipo());
                }
            }
        }
    }

    public void ordenar() {
        Collections.sort(listaTipo, new OrdenarPorNombre());
        removeAllElements();
        addElement("Seleccione un Tipo de Pieza");
        
        for (TipoPieza tipoProducto : listaTipo) {
            addElement(tipoProducto.getNombreTipo());
        }
    }
    
    public void quitarTipo(TipoPieza tipo){
        for (int i=0; i<listaTipo.size(); i++) {
            if(listaTipo.get(i).getId()==tipo.getId()){
                listaTipo.remove(i);
                removeElement(tipo.getNombreTipo());
            }
        }
    }
}

class OrdenarPorNombre implements Comparator<TipoPieza> {

    @Override
    public int compare(TipoPieza p1, TipoPieza p2) {
        return p1.getNombreTipo().compareToIgnoreCase(p2.getNombreTipo());
    }
}
